#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/time.h>
#include <string.h>
#include <unistd.h>

#include "minishell.h"

int main()
{
    char cadena[MAX_TAMANO_BUFFER];
    char delimitador[10] =" \n\t";
    char comando[MAX_LONGITUD_COMANDO];
    char *ptr=NULL;
    char **parametros;
    int indice_parametro = 0;
    int i;
    /* Inicialización de las variables */
    /*  Asignación dinámica de memoria a la variable 'parametros' */
    parametros = (char **)malloc(MAX_NUMERO_PARAMETRO_COMANDO*sizeof(char *));
    if(parametros==NULL) exit(-1);
    for (i = 0; i < MAX_NUMERO_PARAMETRO_COMANDO; i++)
    {
        parametros[i] = (char *)malloc(MAX_TAMANO_PARAMETRO*sizeof(char));
        if(parametros[i]==NULL) exit(-1);
    }
    /* Fin de inicialización de variables */


    printf("----------------------- Minishell by Jianpei Ye -------------------------\n");
    printf("-------------------------------------------------------------------------\n");
    printf("     'help' para ayuda.  'clear' para limpiar.  'exit' para salir.\n");
    printf("-------------------------------------------------------------------------\n");
    do
    {
        indice_parametro = 0;
        printf("minishell-cmd$ ");
        gets(cadena);
        ptr = strtok(cadena,delimitador);
        if(ptr!=NULL) strcpy(comando,ptr);
        else strcpy(comando,"no_hace_nada");
        //strcpy(comando,ptr);
        while( (ptr = strtok( NULL, delimitador )) != NULL )
        {
            strcpy(parametros[indice_parametro],ptr);
            indice_parametro++;
        }
        //visualizar_parametros_parametros,indice_parametro);

        procesar_comando(comando,parametros,indice_parametro);

    }
    while(strcmp("exit",comando)!=0);
    liberar_memoria_array(ptr);
    liberar_memoria_tabla(parametros,MAX_NUMERO_PARAMETRO_COMANDO);
    printf("\nGracias por usar mi minishell\n");
    return 0;
}

//////////////////////////////////////////////////////


